/*
 * GramaticaView.h
 *
 *  Created on: 23/11/2012
 *      Author: vagner
 */

#ifndef GRAMATICAVIEW_H_
#define GRAMATICAVIEW_H_
#include "GramaticaControl.h"
#include "IOManager.h"
#include <string>
#include <iostream>

using namespace tp2ftcControl;

namespace tp2ftcView {

class GramaticaView : public IOManager{
private:
	GramaticaControl gramaticaControl;
	static const int NO_SKIP_WS = 0;
	static const int SKIP_WS = 1; //Ignorando espaco em branco
	static const int NUM_OPCOES_MENU = 8;
	static std::vector<std::string> OPCOES_MENU;
	inline std::string getEntradaUsuario(const unsigned short& modo);
	inline void showMenuOpcoes()const;
	//Recupera o tamanho da maior palavra contdia em OPCOES_MENU
	inline int getMaiorTamanhoPalavra() const;
	void showMenuDefinirVariavelPartida(void);
	void showMenuInserirRegra(void);
	void showMenuRemoverRegra(void);
	void showMenuRemoverVariavel(void);
	void showMenuListarVariaveisInuteis(void);
	void showMenuCarregarGramatica(void);
	void showGramatica()const;
	void showVariaveis(const std::vector<variavel>& variaveis)const;
public:
	GramaticaView();
	virtual ~GramaticaView();
	void showMenuPrincipal(void);
};


}/* namespace tp2ftcView */
#endif /* GRAMATICAVIEW_H_ */
